Reactive System
満たす時、そのシステムは障害が起こっても全体が停止せず、トラフィックが急激に増えても遅くなることもなく、安定して応答を返し続ける、社会のニーズと期待に応えるソフトウェアといえる
システムは可能な限りすみやかに応答する
即応性とは使い勝手と実用性の基盤
問題が素早く検出され効果的に対処できる
即応性のあるシステムは、迅速で、かつ一貫した応答時間を提供する
システムは応答時間に信頼性のある上限を確立し、一貫した品質のサービスを供給する。この一貫した挙動によってエラー処理が単純化され、エンドユーザの信頼を醸成し、さらなる相互作用を促す
耐障害性を持たないシステムは障害が起きると即応性を失う
耐障害性は以下によって実現される
高可用性を保証する
封じ込め
障害はそれぞれのコンポーネントに封じ込められる
コンポーネントは互いに隔離される
各々のコンポーネントの回復処理は(外部の)他のコンポーネントに委譲される
システムが部分的に故障してもシステム全体を危険に晒すことなしに回復することが保証される
コンポーネントのクライアントはコンポーネントの障害への対処に苦しめられることがなくなる
システムはワークロードが変動しても即応性を保ち続ける
リアクティブシステムは、入力の提供に割り当てるリソースを増加あるいは減少させることで入力量の変化に反応する これは、システムの中に競合する場所や中心的なボトルネックが存在しないように設計し、シャーディングしたりレプリケーションしたコンポーネント間に入力を分散させることを意味する
リアクティブシステムは関連するライブな性能測定を提供することで、予測的かつリアクティブなスケーリングアルゴリズムをサポートする。これらは、コモディティなハードウェアとソフトウェアプラットフォーム上で費用対効果の高い弾力性を実現する これによって、疎結合性、隔離性、位置透過性を保証すると共に、エラーをメッセージとして委譲する手段を確保する。明示的なメッセージパッシングは負荷の管理と弾力性を可能とする。 システム内にメッセージキューを作成して監視し、必要ならバックプレッシャーを適用することでフロー制御が可能になる 通信の手段として位置透過なメッセージングを使うことで、通信がクラスタを跨ぐ場合も単一のホスト内の場合も、同じ構成とセマンティクスで障害を管理できる
ノンブロッキング通信により、受信側はアクティブ時のみリソースを消費できるのでシステムのオーバヘッドを抑制できる
参考